install hexo on centos 7

hexo 官网

https://hexo.io/zh-cn/docs/index.html

安装git

yum install git

配置git全局信息

git config --global user.email "share2030cn@126.com"
git config --global user.name "dolphincn"

安装Nodejs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

## 安装Nodejs 8, 自动安装npm

## 配置 nodejs yum 源
# vi /etc/yum.repos.d/nodejs.repo

[nodesource]
name=Node.js Packages for Enterprise Linux 7 - $basearch
baseurl=https://rpm.nodesource.com/pub_8.x/el/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL

[nodesource-source]
name=Node.js for Enterprise Linux 7 - $basearch - Source
baseurl=https://rpm.nodesource.com/pub_8.x/el/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
gpgcheck=1

## 安装
# yum install nodejs

通过二进制包安装nodejs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.gz

tar -zxf node-v8.11.2-linux-x64.tar.gz -C /usr/local/
mv /usr/local/node-v8.11.2-linux-x64 /usr/local/nodejs

vi /etc/profile.d/nodejs.sh
export NODE_HOME=/usr/local/nodejs
export PATH=$NODE_HOME/bin:$PATH

source /etc/profile.d/nodejs.sh

## 检查版本
node -v
npm -v

安装hexo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

## npm 全局安装hexo-cli,这个在系统安装一次就可以了

npm install -g hexo-cli
/usr/bin/hexo -> /usr/lib/node_modules/hexo-cli/bin/hexo


## 安装hexo 服务及大部分常用插件
## 此命令安装绝大部分常用插件,属于局部安装,会在当前目录下创建node_modules文件夹

npm install


## 常用插件,大部分已安装
npm install hexo-generator-index --save
npm install hexo-generator-archive --save
npm install hexo-generator-category --save
npm install hexo-generator-tag --save
npm install hexo-server --save

npm install hexo-deployer-git --save
npm install hexo-deployer-heroku --save
npm install hexo-deployer-rsync --save
npm install hexo-deployer-openshift --save

npm install hexo-renderer-marked --save
npm install hexo-renderer-stylus --save
npm install hexo-generator-feed --save
npm install hexo-generator-sitemap --save

npm install hexo-generator-json-content --save

安装配置blog步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

## 全局安装hexo-cli
npm install -g hexo-cli

## 创建blog目录
mkdir -p /data/hexo_blog

## 初始化blog目录, 并建立blog站点
hexo init /data/hexo_blog
cd /data/hexo_blog

## 安装hexo 服务及大部分常用插件
npm install

## 新建完成后,指定文件夹的目录如下:
.
├── _config.yml ## 网站的 配置 信息,您可以在此配置大部分的参数。
├── package.json ## 应用程序的信息。EJS, Stylus 和 Markdown renderer 已默认安装,您可以自由移除。
├── scaffolds ## 模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。
├── source ## 资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
| ├── _drafts
| └── _posts
└── themes ## 主题 文件夹。Hexo 会根据主题来生成静态页面。

## 下载next主题和安装插件

git clone --depth 1 https://github.com/theme-next/hexo-theme-next /data/hexo_blog/themes/next
npm install hexo-generator-searchdb --save



## 配置支持 github
npm install hexo-deployer-git --save

## 修改
## repo: git@github.com:<username>/<username>.github.io.git
## 注意,如果用github拥有者的名字建立仓库,如[<username>.github.io],则可以通过互联网直接访问username.github.io网站内容

vi ./_config
.....
# Deployment
## Docs: https://hexo.io/docs/deployment.html

deploy:
type: git
repo: git@github.com:dolphincn/dolphincn.github.io.git
branch: master
master message: 'site update: {{now("YYYY-MM-DD HH/mm/ss")}}'


## 配置搜索

# 在你站点的根目录下

npm install hexo-generator-searchdb --save

# 打开Hexo 站点的_config.yml,添加配置

search:
path: search.xml
field: all
format: html
limit: 10000


# 打开themes/next下的_config.yml,搜索关键字local_search,设置为true

local_search:
enable: true


## 安装图片浏览器
$ rm -rf themes/next/source/lib/fancybox

$ git clone --depth 1 https://github.com/theme-next/theme-next-fancybox3 themes/next/source/lib/fancybox

# 编辑next 主题配置文件 _config.yml:

fancybox: true

## 安装书签保存插件
$ rm -rf themes/next/source/lib/bookmark
$ git clone --depth 1 https://github.com/theme-next/theme-next-bookmark.git themes/next/source/lib/bookmark

# 编辑next 主题配置文件 _config.yml:
bookmark: true

其它主题

## 下载bluelake主题和插件

git clone --depth 1 https://github.com/chaooo/hexo-theme-BlueLake.git /data/hexo_blog/themes/bluelake
cd /data/hexo_blog
npm install hexo-renderer-jade@0.3.0 --save
npm install hexo-renderer-stylus --save
npm install hexo-generator-json-content@2.2.0 --save


## 

hexo 管理命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

## 启动本地hexo blog服务

hexo server
# 或者
hexo server -i 192.168.100.10 -p 80

## 清空

hexo clean

## 生成静态页面

hexo generate

## 发布blog 到 github

hexo deploy

## 创建一个页面

hexo new "a new post"

## 将草稿从_drafts移到_posts目录下

hexo publish articlename

设置支持txt渲染为html

# 如果markdown 文件扩展名保存为txt

# 编辑 hexo 配置文件_config.yml,修改
    new_post_name: :title.md
    改为
    new_post_name: :title.txt

# 修改内容渲染模块, 照葫芦画瓢,添加一行txt文件的渲染
    vi ./node_modules/hexo-renderer-marked/index.js
    ........
    hexo.extend.renderer.register('txt', 'html', renderer, true);
    hexo.extend.renderer.register('md', 'html', renderer, true);

配置nginx反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

cat > /etc/yum.repos.d/nginx.repo << EOF

# nginx.repo

[nginx]
name="nginx repo"
baseurl=http://nginx.org/packages/rhel/7/x86_64/
gpgcheck=1
gpgkey=http://nginx.org/packages/keys/nginx_signing.key
enabled=1

EOF


yum install nginx


cat > /etc/nginx/conf.d/hexoblog.conf << EOF

server {
listen 80;

server_name blog.com;

error_page 404 /404/;

location / {
root /data/hexo_blog;
index index.html;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}

EOF

hexo 命令说明

指令
init

$ hexo init [folder]

新建一个网站。如果没有设置 folder ,Hexo 默认在目前的文件夹建立网站。
new

$ hexo new [layout] <title>

新建一篇文章。如果没有设置 layout 的话,默认使用 _config.yml 中的 default_layout 参数代替。如果标题包含空格的话,请使用引号括起来。
generate

$ hexo generate

生成静态文件。
选项     描述
-d, --deploy     文件生成后立即部署网站
-w, --watch     监视文件变动

该命令可以简写为

$ hexo g

publish

$ hexo publish [layout] <filename>

发表草稿。
server

$ hexo server -i 200.200.200.221 -p 80

启动服务器。默认情况下,访问网址为: http://localhost:4000/。
选项     描述
-p, --port     重设端口
-s, --static     只使用静态文件
-l, --log     启动日记记录,使用覆盖记录格式
deploy

$ hexo deploy

部署网站。
参数     描述
-g, --generate     部署之前预先生成静态文件

该命令可以简写为:

$ hexo d

render

$ hexo render <file1> [file2] ...

渲染文件。
参数     描述
-o, --output     设置输出路径
migrate

$ hexo migrate <type>

从其他博客系统 迁移内容。
clean

$ hexo clean

清除缓存文件 (db.json) 和已生成的静态文件 (public)。

在某些情况(尤其是更换主题后),如果发现您对站点的更改无论如何也不生效,您可能需要运行该命令。
list

$ hexo list <type>

列出网站资料。
version

$ hexo version

显示 Hexo 版本。
选项
安全模式

$ hexo --safe

在安全模式下,不会载入插件和脚本。当您在安装新插件遭遇问题时,可以尝试以安全模式重新执行。
调试模式

$ hexo --debug

在终端中显示调试信息并记录到 debug.log。当您碰到问题时,可以尝试用调试模式重新执行一次,并 提交调试信息到 GitHub。
简洁模式

$ hexo --silent

隐藏终端信息。
自定义配置文件的路径

$ hexo --config custom.yml

自定义配置文件的路径,执行后将不再使用 _config.yml。
显示草稿

$ hexo --draft

显示 source/_drafts 文件夹中的草稿文章。
自定义 CWD

$ hexo --cwd /path/to/cwd

自定义当前工作目录(Current working directory)的路径。

站点配置文件说明

站点配置文件的配置 .\hexo\_config.yml 。

# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site 网站
title: 为学             #网站标题
subtitle: 天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。      #网站副标题
description: 天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。   #网站描述
author: willxue         #您的名字
language: zh-CN         #网站使用的语言
timezone:               #网站时区。Hexo 默认使用您电脑的时区

# URL 网址
## 如果您的网站存放在子目录中,例如 http://yoursite.com/blog,则请将您的 url 设为 http://yoursite.com/blog 并把 root 设为 /blog/。
url: http://willxue.top
permalink: :year/:month/:day/:title/    #生成文件名字的格式我改成blog/:title:year:month:day/
permalink_defaults:

# Directory 目录配置
source_dir: source   #源文件夹,这个文件夹用来存放内容。
public_dir: public   #公共文件夹,这个文件夹用于存放生成的站点文件。
tag_dir: tags   #标签文件夹
archive_dir: archives   #归档文件夹
category_dir: categories   #分类文件夹
code_dir: downloads/code    #nclude code 文件夹
i18n_dir: :lang   #国际化(i18n)文件夹
skip_render:   #跳过指定文件的渲染,您可使用 glob 表达式来匹配路径。

# Writing 文章
new_post_name: :title.md   # 新建文章默认文件名
default_layout: post   # 默认布局
titlecase: false   # Transform title into titlecase
external_link: true   # 在新标签中打开一个外部链接,默认为true
filename_case: 0   #转换文件名,1代表小写;2代表大写;默认为0,意思就是创建文章的时候,是否自动帮你转换文件名,默认就行,意义不大。
render_drafts: false   #是否渲染_drafts目录下的文章,默认为false
post_asset_folder: false   #启动 Asset 文件夹
relative_link: false   #把链接改为与根目录的相对位址,默认false
future: true   #显示未来的文章,默认false
highlight:   #代码块的设置 
enable: true
line_number: true
auto_detect: false
tab_replace:

# Category & Tag   分类和标签的设置
default_category: uncategorized   #默认分类
category_map:   #分类别名
tag_map:   #标签别名

# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss

# Pagination 分页
## Set per_page to 0 to disable pagination
per_page: 10   #每页显示的文章量 (0 = 关闭分页功能)
pagination_dir: page   #分页目录

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next

feed:
type: atom       #feed 类型 (atom/rss2)
path: atom.xml   #rss 路径
limit: 20        #在 rss 中最多生成的文章数(0显示所有)

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy: 
type: git 
repository: https://github.com/imwillxue/imwillxue.github.com.git 
branch: master